home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mission 3
/
Mission 3.zip
/
Mission 3.iso
/
zugabe
/
va45
/
visual45
/
library
/
extend
/
clipbrd.s
next >
Wrap
Text File
|
1998-08-22
|
7KB
|
280 lines
ifnd LIB_LOAD_FILE_IN_MEM
fail ; LIB_GEM_CLIPBOARD : nécessite la librairie LIB_LOAD_FILE_IN_MEM
end
ifnd LIB_GET_FLENGTH
fail ; LIB_LOAD_FILE_IN_MEM : nécessite librairie LIB_GET_FLENGTH
end
endc
else
ifnd LIB_GET_FLENGTH
fail ; LIB_LOAD_FILE_IN_MEM : nécessite librairie LIB_GET_FLENGTH
end
endc
endc
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_CLIPB_SEARCH_CLIPBOARD
; Description : Recherche du chemin du clipboard GEM
;
; Rq : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
;
; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
; out : a1.l = pointeur sur le premier 0.b après le chemin du clipboard
; out : d7.w = GWVA_NO_ERROR_GENERIC ou GWVA_ERROR_GENERIC si erreur
;
; 19/03/98 : Création
;------------------------------------------------------------------------------
GWVA_CLIPB_SEARCH_CLIPBOARD:
; On doit utiliser un sémaphore sous Mint>=0.92 (recherche cookie)
scrp_read #GWVA_CLIPB_PATHNAME
tst.w d0
bne.s .chemin_clipboard_defini
.pas_de_clipboard_defini:
lea GWVA_CLIPB_PATHNAME,a0
move.b GWVA_ROOT_SYSVAR_BOOT_DEVICE+1,(a0)
add.b #'A',(a0)+
move.w #':\',(a0)+
move.l #'CLIP',(a0)+
move.l #'BRD'*256,(a0)
save.l a0
DCREATE GWVA_CLIPB_PATHNAME
load.l a0
cmp.w #-34,d0 ; path not found
beq .pas_creation_clipboard
.clipboard_cree:
move.l #'BRD\',(a0)+
clr.b (a0)
scrp_write #GWVA_CLIPB_PATHNAME
.chemin_clipboard_defini:
lea GWVA_CLIPB_PATHNAME,a0
STOP_ON_0 a0
lea 1(a0),a0
.pas_bon_format_de_chemin:
lea -1(a0),a0
cmp.l #GWVA_CLIPB_PATHNAME,a0
beq.s .pas_de_clipboard_defini
cmp.b #'\',-1(a0)
bne.s .pas_bon_format_de_chemin
move.l a0,a1
move.w #GWVA_NO_ERROR_GENERIC,d7
rts
.pas_creation_clipboard:
move.w #GWVA_ERROR_GENERIC,d7
rts
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_CLIPB_CLEAR_CLIPBOARD
; Description : Vide le clipboard GEM
;
; Rq : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
;
; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
; out : a1.l = pointeur sur le premier 0.b après le chemin du clipboard
; out : d7.w = GWVA_NO_ERROR_GENERIC ou GWVA_ERROR_GENERIC si erreur
;
; 19/03/98 : Création
;------------------------------------------------------------------------------
GWVA_CLIPB_CLEAR_CLIPBOARD:
bsr GWVA_CLIPB_SEARCH_CLIPBOARD
cmp.w #GWVA_NO_ERROR_GENERIC,d7
bne.s .erreur_de_clipboard
move.l a1,a0
move.l #'SCRA',(a1)+
move.l #'P.*'*256,(a1) ; nom générique des fichiers du clipboard
save.l a0
FGETDTA ; d0.l = adresse ancien DTA
save.l d0
FSETDTA GWVA_ROOT_DTA
load.l d0
load.l a0
save.l d0
save.l a0
FSFIRST #FA_ARCHIVE,GWVA_CLIPB_PATHNAME
.effacer_tous_les_fichier_scrap:
tst.w d0
bmi.s .pas_de_fichier_scrap_trouve
move.l (sp),a0
lea GWVA_ROOT_DTA+d_fname,a1
COPY_STRING_0 a1,a0
FDELETE GWVA_CLIPB_PATHNAME
FSNEXT
bra.s .effacer_tous_les_fichier_scrap
.pas_de_fichier_scrap_trouve:
load.l a1
load.l a0
save.l a1
FSETDTA (a0)
load.l a1
move.w #GWVA_NO_ERROR_GENERIC,d7
.erreur_de_clipboard:
rts
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_CLIPB_COPY
; Description : Copie un buffer dans le clipboad GEM
;
; Rq : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
;
; in : a0.l = pointeur sur le buffer à écrire dans le clipboard
; in : d0.l = longueur du buffer à écrire
; in : d1.l = extention du fichier justifiée à gauche : "TXT"*256
; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
; GWVA_ERROR_GENERIC
; ou erreur de création/écriture de fichier
;
; 19/03/98 : Création
;------------------------------------------------------------------------------
GWVA_CLIPB_COPY:
save.l d0-d1/a0
bsr GWVA_CLIPB_SEARCH_CLIPBOARD
load.l d0-d1/a0
cmp.w #GWVA_NO_ERROR_GENERIC,d7
bne.s .erreur_de_clipboard
move.l #'SCRA',(a1)+
move.w #'P.',(a1)+
move.l d1,(a1)
save.l d0/a0
FILE_OPEN write,GWVA_CLIPB_PATHNAME,d7
load.l d0/a0
tst.w d7
bmi.s .pas_creation_fichier_scrap
save.l d0/d7
FWRITE a0,d0,d7
load.l d1/d7
save.l d0
FCLOSE d7
load.l d0
tst.l d0
bmi.s .erreur_ecriture
cmp.l d0,d1
bne.s .erreur_ecriture
move.w #GWVA_NO_ERROR_GENERIC,d7
.pas_creation_fichier_scrap:
.erreur_de_clipboard:
rts
.erreur_ecriture:
move.w #GWVA_ERROR_GENERIC,d7
rts
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_CLIPB_PASTE
; Description : Lecture d'un fichier du clipboard GEM
;
; Rq : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
;
; in : a0.l = pointeur sur le buffer où ecrire les données lues du clipboard
; in : d0.l = longueur du buffer à lire
; in : d1.l = extention du fichier justifiée à gauche : "TXT"*256
; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
; out : d0.l = longueur réellement lue
; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
; GWVA_ERROR_GENERIC
; ou erreur de lecture de fichier
;
; 19/03/98 : Création
;------------------------------------------------------------------------------
GWVA_CLIPB_PASTE:
save.l d0-d1/a0
bsr GWVA_CLIPB_SEARCH_CLIPBOARD
load.l d0-d1/a0
cmp.w #GWVA_NO_ERROR_GENERIC,d7
bne.s .erreur_de_clipboard
move.l #'SCRA',(a1)+
move.w #'P.',(a1)+
move.l d1,(a1)
save.l d0/a0
FILE_OPEN read,GWVA_CLIPB_PATHNAME,d7
load.l d0/a0
tst.w d7
bmi.s .erreur_de_lecture_fichier_scrap
FREAD a0,d0,d7
save.l d0
FCLOSE d7
load.l d0
tst.l d0
bmi.s .erreur_lecture
move.w #GWVA_NO_ERROR_GENERIC,d7
.erreur_de_lecture_fichier_scrap:
.erreur_de_clipboard:
rts
.erreur_lecture:
move.w #GWVA_ERROR_GENERIC,d7
rts
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_CLIPB_PASTE_IN_MEM
; Description : Lecture d'un fichier du clipboard GEM en memoire, avec
; réservation automatique du buffer par un MXALLOC
;
; Rq : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
; Rq : A l'utilisateur de la fonction de rendre la mémoire du MXALLOC
;
; in : d0.l = extention du fichier justifié à gauche : "TXT"*256
; in : d1.w = mxalloc-mode
; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
; out : a0.l = pointeur sur le buffer
; out : d0.l = longueur réellement lue
; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
; GWVA_ERROR_GENERIC
; ou erreur de lecture de fichier
;
; 19/03/98 : Création
;------------------------------------------------------------------------------
GWVA_CLIPB_PASTE_IN_MEM:
save.l d0-d1
bsr GWVA_CLIPB_SEARCH_CLIPBOARD
load.l d0-d1
cmp.w #GWVA_NO_ERROR_GENERIC,d7
bne.s .erreur_de_clipboard
move.l #'SCRA',(a1)+
move.w #'P.',(a1)+
move.l d0,(a1)
lea GWVA_CLIPB_PATHNAME,a0
move.w d1,d0
bsr GWVA_FILE_LOAD_IN_MEM
move.l d0,d7
ble.s .erreur_de_lecture_fichier_scrap
move.w #GWVA_NO_ERROR_GENERIC,d7
.erreur_de_lecture_fichier_scrap:
.erreur_de_clipboard:
rts